home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
embedded
/
m68k
/
tutor.arc
/
HEX2DEC.SA
< prev
next >
Wrap
Text File
|
1990-01-05
|
2KB
|
52 lines
XDEF HEX2DEC
SPC 1
HEX2DEC IDNT 1,0 HEX2DEC convert hex to decimal 11/02/81
SECTION 11
* CONVERT BINARY TO DECIMAL REG D0 PUT IN (A6) BUFFER AS ASCII
*
HEX2DEC MOVEM.L D1-D4/D6-D7,-(A7) SAVE REGISTERS
MOVE.L D0,D7 SAVE IT HERE
BPL.S HX2DC
NEG.L D7 CHANGE TO POSITIVE
BMI.S HX2DC57 SPECIAL CASE (-0)
MOVE.B #'-',(A6)+ PUT IN NEG SIGN
HX2DC CLR.W D4 FOR ZERO SURPRESS
MOVE.L #10,D6 COUNTER
HX2DC0 MOVE.L #1,D2 VALUE TO SUB
MOVE.L D6,D1 COUNTER
SUB.L #1,D1 ADJUST - FORM POWER OF TEN
BEQ.S HX2DC2 IF POWER IS ZERO
HX2DC1 MOVE.W D2,D3 D3=LOWER WORD
MULU #10,D3
SWAP D2 D2=UPPER WORD
MULU #10,D2
SWAP D3 ADD UPPER TO UPPER
ADD.W D3,D2
SWAP D2 PUT UPPER IN UPPER
SWAP D3 PUT LOWER IN LOWER
MOVE.W D3,D2 D2=UPPER & LOWER
SUB.L #1,D1
BNE HX2DC1
HX2DC2 CLR.L D0 HOLDS SUB AMT
HX2DC22 CMP.L D2,D7
BLT.S HX2DC3 IF NO MORE SUB POSSIBLE
ADD.L #1,D0 BUMP SUBS
SUB.L D2,D7 COUNT DOWN BY POWERS OF TEN
BRA.S HX2DC22 DO MORE
HX2DC3 TST.B D0 ANY VALUE?
BNE.S HX2DC4
TST.W D4 ZERO SURPRESS
BEQ.S HX2DC5
HX2DC4 ADD.B #$30,D0 BINARY TO ASCII
MOVE.B D0,(A6)+ PUT IN BUFFER
MOVE.B D0,D4 MARK AS NON ZERO SURPRESS
HX2DC5 SUB.L #1,D6 NEXT POWER
BNE HX2DC0
TST.W D4 SEE IF ANYTHING PRINTED
BNE.S HX2DC6
HX2DC57 MOVE.B #'0',(A6)+ PRINT AT LEST A ZERO
HX2DC6 MOVEM.L (A7)+,D1-D4/D6-D7 RESTORE REGISTERS
RTS END OF ROUTINE
SPC 3
END